package com.lzy.product.apis;

import com.github.pagehelper.PageInfo;
import com.lzy.framework.common.dtos.LicenseDto;
import com.lzy.framework.core.orm.db.Pager;
import com.lzy.product.dtos.ProductInfoDto;

import java.util.List;

/**
 * Created by WIN7 on 2017/11/28.
 */

public interface ProductInfoServiceApi extends BaseServiceApi<ProductInfoDto> {

    /**
     * 有审核的新增操作
     *
     * @param dto
     * @param param
     * @param lic
     * @return
     */
    Long addProduct(ProductInfoDto dto, String[] param, LicenseDto lic);

    /**
     * 有审核的更新操作
     *
     * @param dto
     * @param param
     * @param lic
     * @return
     */
    Boolean updateProduct(ProductInfoDto dto, String[] param, LicenseDto lic);

    /**
     * 分页查询产品列表
     *
     * @param pager
     * @param dto
     * @return
     */
    PageInfo<ProductInfoDto> selectList(Pager pager, ProductInfoDto dto);

    /**
     * 批量上下架
     *
     * @param shelves
     * @param ids
     * @return
     */
    Integer updateList(Integer shelves, String ids);

    /**
     * 根据产品id获取产品包含项信息
     *
     * @param productId
     * @return
     */
    ProductInfoDto getProductProject(Long productId);

    /**
     * 根据产品id字符串分页获取产品列表
     *
     * @param pager
     * @param ids
     * @return
     */
    PageInfo<ProductInfoDto> selectListByIdList(Pager pager, String ids);

    /**
     * 根据部门id查询产品列表
     *
     * @param pager
     * @param dto
     * @param deptId
     * @return
     */
    PageInfo<ProductInfoDto> selectListByDept(Pager pager, ProductInfoDto dto, Long deptId);

    /**
     * 根据分类id查询产品列表
     *
     * @param dto
     * @param classifyId
     * @return
     */
    List<ProductInfoDto> selectListByClassifyId(ProductInfoDto dto, Long classifyId);

    /**
     * 审核操作
     *
     * @param id           ID
     * @param verifyStatus 审核状态 0：未审核 1：已审核，未通过2：已通过
     * @param userId       用户ID
     * @param userName     用户名称
     * @param remark
     * @param applicantId
     * @return 是否操作成功
     */
    Boolean updateVerifyStatusById(Long id, int verifyStatus, Long userId, String userName, String remark, Long applicantId);

    /***
     * 启用禁用操作
     * @param marketAble  启禁用状态：0：启用 1：禁用
     * @param userId  用户ID
     * @param userName    用户名称
     * @param remark
     * @param applicantId
     * @return 是否操作成功
     */
    Boolean updateMarketAbleById(Long id, Boolean marketAble, Long userId, String userName, String remark, Long applicantId);

    /**
     * 根据分类idList查询正常的产品列表
     *
     * @param pager
     * @param ids
     * @return
     */
    PageInfo<ProductInfoDto> selectListByClassifyIdList(Pager pager, ProductInfoDto dto, String ids);
}
